# python中的列表 不等同于 数组!

# 数组是一种线性数据结构
# 数组中一般存储相同类型的元素
# 数组在内存中是连续存储的,使用的是连续的内存空间
# 数组的长度是固定的


# 初始化数组: [0]*长度
# 大多数编程语言会将数组元素初始化为0
arr:list[int] = [0] * 50  # [ 0, 0, 0, 0, 0 ] 整型数组
a = [[0] * 10]
b = [[0] for i in range(10)]
print(a)
print(b)


# 访问(在数组中访问元素非常高效)
arr = ["a","b","c","d","e","f","g","h"]

# 插入 删除(是非常费事 耗内存)
nums = [1,2,3,4,5,6,7,8,9]
def insert(nums: list[int], num: int, index: int):
    """在数组的索引 index 处插入元素 num"""
    # 把索引 index 以及之后的所有元素向后移动一位
    for i in range(len(nums) - 1, index, -1):
        nums[i] = nums[i - 1]
    # 将 num 赋给 index 处的元素
    nums[index] = num

# 扩容
def extend(nums: list[int], enlarge: int) -> list[int]:
    """扩展数组长度"""
    # 初始化一个扩展长度后的数组
    res = [0] * (len(nums) + enlarge)
    # 将原数组中的所有元素复制到新数组
    for i in range(len(nums)):
        res[i] = nums[i]
    # 返回扩展后的新数组
    return res
